<?php
/**
 *
 *----------Dragon be here!----------/
 * 　　　┏┓　　　┏┓
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　　　　　┃
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　┃
 * 　　┃　　　　　　　┃
 * 　　┃　　　┻　　　┃
 * 　　┃　　　　　　　┃
 * 　　┗━┓　　　┏━┛
 * 　　　　┃　　　┃神兽保佑
 * 　　　　┃　　　┃代码无BUG！
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 * ━━━━━━神兽出没━━━━━━
 * Created by PhpStorm.
 * User: huangxh
 * Date: 2018/1/8 0008
 * Time: 上午 10:25
 */

namespace models\DAO;


class GroupModel extends BaseModel
{
    /**
     * 主键
     * @var null
     */
    public $_id = null;

    /**
     * 头衔
     * @var null
     */
    public $_title = null;

    /**
     * 状态
     * @var null
     */
    public $_status = null;

    /**
     * 拥有的权限
     * @var null
     */
    public $_rules = null;

    /**
     * 单例实例
     */
    static private $instance = null;

    /**
     * UserModel constructor.
     * @throws \Yaf\Exception
     */
    public function __construct(){
        parent::__construct(str_replace("Model", "", substr(get_class($this), strrpos(get_class($this), "\\")+1)));
//        $this->meta = new \stdClass();
    }

    /**
     * @return UserModel|null
     * @throws \Yaf\Exception
     */
    static public function getInstance(){
        if(is_null(self::$instance)){
            self::$instance = new self('group');
        }
        return self::$instance;
    }

    /**
     *
     */
    public function __destruct(){
        self::$instance = null;
    }

    /**
     * set 设置数据表模型类的参数字段数据
     * @param string $name      参数名
     * @param string $value     参数值
     * @return $this
     */
    public function __set($name = "", $value = ""){
        $this->$name = $value;
        return $this;
    }

    /**
     * get获取数据表模型类的参数字段
     * @param string $name      参数名
     * @return mixed
     */
    public function __get($name = ""){
        return $this->$name;
    }

    /**
     * @param array $condition
     * @param int $pageNum
     * @param int $pageSize
     * @return array
     * @throws \ReflectionException
     * @throws \Yaf\Exception
     */
    public function getList($condition = [],$pageNum = 0,$pageSize = 15,$order =[]){

        $count = $this->field('count(id) as count')->select();
        $count=$count->data[0]['count'];
        $result = $this->field('')->where($condition)->limit($pageNum,$pageSize)->order($order)->select();
        $users = !empty($result)? \Common\Common::objToArr($result):[];
        return [$users,$count];
    }

    /**
     * @param array $condition
     * @return bool|BaseModel|\Yaf\Exception
     * @throws \ReflectionException
     * @throws \Yaf\Exception
     */
    public function findOneBy($condition = [],$field = ''){

        $result = $this->field($field)->find($condition);
        return $result;
    }

    /**
     * @param array $condition
     * @return mixed
     * @throws \Exception
     * @throws \Yaf\Exception
     */
    public function updateData($condition = []){
        $result = empty($condition)? $this->update():$this->update($condition);
        return $result;
    }

    /**
     * @param array $condition
     * @return mixed
     * @throws \Exception
     */
    public function addData($condition = [])
    {
        $dataNum = count($condition);
        if ($dataNum ==1){
            return $this->insert($condition);
        }
        return $this->insertAll($condition);
    }


    /**
     * @param array $condition
     * @return mixed
     * @throws \Exception
     */
    public function deleteData($condition =[]){

        return $this->delete($condition);
    }
}